﻿using YDT_OrderService.Applications.DTOs;

namespace YDT_OrderService.Applications.Interfaces
{
    public interface IOrderService
    {
        Task<OrderDto> GetOrderByIdAsync(Guid id);
        Task<OrderDto> GetOrderByOrderSnAsync(string orderSn);
        Task<IEnumerable<OrderDto>> GetOrdersByUserIdAsync(Guid userId);
        Task<IEnumerable<OrderDto>> GetAllOrdersAsync();
        Task<OrderDto> CreateOrderAsync(CreateOrderDto createOrderDto);
        Task<OrderDto> UpdateOrderAsync(Guid id, UpdateOrderDto updateOrderDto);
        Task<bool> DeleteOrderAsync(Guid id);
        Task<OrderDto> MarkOrderAsPaidAsync(Guid id);
        Task<OrderDto> MarkOrderAsShippedAsync(Guid id);
        Task<OrderDto> MarkOrderAsCompletedAsync(Guid id);
        Task<OrderDto> CancelOrderAsync(Guid id);
    }
}
